// 发送请求
import axios from "axios";
// 解析html
import * as cheerio from "cheerio";
// 下载图片
import download from "download";
// 文件模块
import fs from "fs";

async function getData() {
  // 获取html
  let res = await axios.get("http://www.atguigu.com/teacher.shtml");

  // 这会将 HTML 字符串加载到 Cheerio 中并返回 Cheerio 对象
  const $ = cheerio.load(res.data);

  // 正则匹配文件格式
  const imgReg = /\.(jpg|jpeg|png|gif|bmp)$/;

  // 获取所有的image标签
  const imagesArray = Array.from($(".con ul").find("img"));

  //拼接访问路径 编码 过滤图片格式
  let imagsUrl = imagesArray
    .map((img) => "http://www.atguigu.com/" + encodeURI($(img).attr("src")))
    .filter((img) => imgReg.test(img));

  //创建文件目录
  if (!fs.existsSync("dist")) {
    fs.mkdirSync("dist");
  }
  imagsUrl.forEach(async (img) => {
    try {
      const response = await download(img); // 使用download函数下载文件
      const filePath = `dist/${decodeURI(img).split("/").pop()}`; //解码 获取图片后缀
      fs.writeFileSync(filePath, response); // 使用writeFileSync写入文件
    } catch (error) {
      console.error("Error downloading image:", error);
    }
  });
}

getData();
